Gambling has become an increasingly important and popular form of entertainment. Electronic gaming terminals are particularly important to the gaming industry as a wide variety of entertainment formats can easily be produced, capable of appealing to a broad spectrum of players. Electronic gaming terminals may, for example, include reel slot machines, video poker machines, video keno machines, and video bingo machines.
Originally, gaming machines were provided as stand alone devices that operated independently. Today, most gaming machines are networked together to a central system. The central system is generally comprised of several host computers. Each host computer (or server) is dedicated to providing a specific gaming function. These gaming functions include accounting, player tracking, and cashless gaming among others. Host computers are in serial communication with gaming terminals in a master slave communication protocol. More advanced gaming systems are becoming available that allow gaming terminals to be linked to a central server using network protocols such as TCP/IP.
Because gaming terminals are such an important source of income for the gaming industry, casinos continually seek to improve their profitability by adding new features and capabilities to gaming terminals. The networking of gaming terminals has allowed the gaming industry to incorporate new game features, as well as more sophisticated administrative gaming functions. Among these new game features are more advanced audiovisual displays, user input devices, and user-friendly interfaces. Networked systems can provide increased gaming terminal security, player tracking data, and more sophisticated financial and accounting reports.
All these gaming functions are carried out by application programs. Several different software applications may be contained in a single gaming function. Each of these software applications communicates through event messages with other software applications and other gaming equipment within the network to provide various gaming functions. These gaming functions could not be provided without this interchange of event messages.
In the past, each of these event messages was forwarded using software code embedded in each application. Remote procedure call (RPC) technology is one methodology for routing messages using embedded software code. This technology emulates the behavior of a single system running a single process, operating as a synchronized system, processing one message at a time. This technology is limited, as a client making a request on a server cannot proceed until the server responds to the client's request. This creates a highly interdependent system where a single failure of one application may cascade and create an entire system failure. This weakness in RPC type technologies is particularly apparent in gaming systems with vertically integrated applications.
In addition to susceptibility to system failure, the use of RPC technology is not conducive to systems and applications that require frequent revision. The embedded application-specific information in each application program, required to control message routing, makes software revisions extremely complicated and time consuming.
Any process utilizing this embedded software routing code generally requires extensive alteration of the inter-process communication flow and data exchange among application programs. The embedded code utilized to forward and receive messages in each of the affected applications must be reconfigured to allow for the addition of new messages or the rerouting of existing messages. Because the code is embedded in the application, and each message may route through several different applications, rewriting the code for the affected applications can become complicated and expensive for even simple modifications.
Each time improvements or additional features are added to existing gaming systems, considerable effort is required to rewrite the embedded software code used by the gaming terminal. As gaming functions are continually being revised, a new method is needed to simplify the addition of new applications and the revision of existing applications without requiring major revision of software code.